/*
* @Author: admin
* @Date:   2018-07-12 11:16:38
* @Last Modified by:   Administrator
* @Last Modified time: 2018-07-12 19:07:23
*/
var http = require('http');
var fs = require('fs');
var url = require('url');
var querystring = require('querystring');
var filename = "./product.json";
var product = JSON.parse(fs.readFileSync('./product.json','utf8'));

var num = product.myProduct.length+1;
http.createServer(function(req,res){
	res.writeHead(200,{
		"Content-Type":"test/html;charset = utf8",
		"Access-Control-Allow-Origin": "*",  
		// 任何域名都可以请求这个接
		"Access-Control-Allow-Methods": "*"  
		//任何方法都可以请求这个
	}
);

	if(req.url == '/getList'){
		console.log('获取商品列表');
		//返回数据必须是字符串的格式  所以可以转化成json字符串
		res.end(JSON.stringify(product));
	}else if(req.url == '/addList'){
		console.log('add');
		var all = '';
		req.on('data',function(chunk){
			all+=chunk;
		})
		req.on('end',function(){
			console.log("添加商品信息");
			var date=new Date;
			var year=date.getFullYear(); 
			var month=date.getMonth()+1;
			month =(month<10 ? "0"+month:month); 
			var mydate = (year.toString()+month.toString());
			
			var name = querystring.parse(all).name;
			//这里可以加个判断，判断name是否为空
			//构建json格式数据
			var pro = {
				"id":num++,
				"name":name,
				"time":mydate
			};
			//将新的信息添加到JSON对象的myProduct数组中push方式
			product.myProduct.push(pro);
			
			//数组修改完后要更新json文件  用字符串方式写入
			fs.writeFileSync(filename, JSON.stringify(product));
			
			//返回数据必须是字符串，所以要转化成json字符串   返回一個數組
			res.end("["+JSON.stringify(pro)+"]");
		})	
	}else if(req.url == "/deleteProduct"){  //删除操作
		/**
		 * 1. 遍历数组找到对应的商品id
			2. 把它从数组中移除
			3. 方法：数组.splice(0, 1); //删除指定子对象，参数：开始位置,删除个数
		 */
		 console.log("删除商品信息");
		 var all = '';
		 req.on('data',function(chunk){
		 	all+=chunk;
		 })
		 
		 req.on('end',function(){
			 var id = querystring.parse(all).id;
			 
			 //遍历数组找到对应的id
			 var flag = false;
			 for(i=0;i<product.myProduct.length;i++){
				 if( String(product.myProduct[i].id) == String(id) ){
					 product.myProduct.splice(i, 1);
					 console.log("删除成功!");
					 flag = true;
					 break;
				 }
			 }
			 
			 if(flag == true){//删除成功
				 //数组修改完后要更新json文件  用字符串方式写入
				 fs.writeFileSync(filename, JSON.stringify(product));
				 
				 //返回数据必须是字符串，所以要转化成json字符串
				 res.end("true");
			 }else{ //删除失败
				 res.end("false");
			 }
			 
		 })
	}else if(req.url == "/searchProduct"){  //商品搜索
		/**
		 * 1. 獲取商品名稱
		   2. 遍歷product 數組  利用indexOf()匹配商品名稱 
			    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现，则该方法返回 -1。
		   3. 返回一個新的json數組到前端
		 */
		 console.log("搜索商品信息");
		 var all = '';
		 req.on('data',function(chunk){
				all+=chunk;
		 })
		 
		 req.on('end',function(){
			 //拿到搜索的商品名稱
			 var name = querystring.parse(all).name;
			 
			 var result = [];
			 //遍历数组
			 for(i=0;i<product.myProduct.length;i++){
			 	if( product.myProduct[i].name.indexOf(name) != -1 ){
					//如果匹配 ，则添加到结果集中
			 		result.push(product.myProduct[i]);
			 	}
			 }
			 
			 res.end(JSON.stringify(result));
		 });
	}
}).listen(8989);